package com.jiashihui.server1.constant;

/**
 * @author jiashihui
 * @describe: 枚举
 * @date 2019/02/18
 * 由于枚举类的构造器私有，所有无法调用，导致枚举类不可以被其它的外部类继承。但是有没有办法去继承它愣？
 * 答案是有的，那就需要用到内部类了(内部类能访问外部类的任何成员，当然能访问已被私有的构造器了)。
 */
//public enum ColorEnum {
//    RED, GREEN, BLANK, YELLOW
//}
public enum ColorEnum implements Behaviour {
    RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLOW("黄色", 4);
    //成员变量
    private String name;
    private int index;

    //构造方法
    ColorEnum(String name, int index) {
        this.name = name;
        this.index = index;
    }

    //普通方法
    public static String getName(int index) {
        for (ColorEnum c : ColorEnum.values()) {
            if (c.getIndex() == index) {
                return c.name;
            }
        }
        return null;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getIndex() {
        return index;
    }

    //覆盖方法
    @Override
    public String toString() {
        return this.index+"_"+this.name;
    }

    @Override
    public void print() {
        System.out.println(this.index+":"+this.name);
    }

    @Override
    public String getInfo() {
        return this.name;
    }
}
